package es.nadalgoyo.frikiquest.excel;

import java.io.IOException;
import java.io.InputStream;

import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import android.app.Activity;
import es.nadalgoyo.frikiquest.bbdd.BBDDException;
import es.nadalgoyo.frikiquest.ftp.FtpCliente;
import es.nadalgoyo.frikiquest.log.Log;

public class Excel {

	private Sheet temas, preguntas, respuestas;

	private FtpCliente cliente;

	public Excel(Activity activity, String pathFichero, String nombreFichero,
			FtpCliente cliente) {
		try {
			this.cliente = cliente;
			read(pathFichero, nombreFichero);
		} catch (BBDDException e) {
			Log.e("LoadExcel (BBDDException) -- " + e.getMessage());
			e.printStackTrace();
		}
	}

	public Sheet getTemas() {
		return temas;
	}

	public Sheet getPreguntas() {
		return preguntas;
	}

	public Sheet getRespuestas() {
		return respuestas;
	}

	public void read(String pathFichero, String nombreFichero)
			throws BBDDException {
		try {

			InputStream is = cliente.getExcelInputStream(pathFichero,
					nombreFichero);
			if (is.available() > -1) {
				Workbook objWB = Workbook.getWorkbook(is);

				temas = objWB.getSheet("tema");
				preguntas = objWB.getSheet("preguntas");
				respuestas = objWB.getSheet("respuestas");
			} else {
				throw new BBDDException(
						"No se ha recogido el fichero de las preguntas");
			}

		} catch (BiffException e) {
			Log.e("LoadExcel -- read() (BiffException) -- " + e.getMessage());
			e.printStackTrace();
			throw new BBDDException ("Error leyendo la actualizacion de cuestionario.");
		} catch (IOException e) {
			Log.e("LoadExcel -- read() (IOException) -- " + e.getMessage());
			e.printStackTrace();
			throw new BBDDException ("Error leyendo la actualizacion de cuestionario.");
		}catch (Exception e){
			Log.e("LoadExcel -- read() (IOException) -- " + e.getMessage());
			throw new BBDDException ("Error leyendo la actualizacion de cuestionario.");
		}
	}

	public void removeExcelFile() {
		cliente.getExcelLocalFile().delete();
	}

}
